@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

:: 物联网车辆管理系统 - 数据库部署脚本 (Windows版本)
:: 版本: 1.0

echo ========================================
echo    物联网车辆管理系统 - 数据库部署
echo ========================================
echo.

:: 检查Docker和Docker Compose
echo [INFO] 检查系统环境...
docker --version >nul 2>&1
if errorlevel 1 (
    echo [ERROR] Docker 未安装，请先安装 Docker Desktop
    pause
    exit /b 1
)

docker-compose --version >nul 2>&1
if errorlevel 1 (
    echo [ERROR] Docker Compose 未安装，请先安装 Docker Compose
    pause
    exit /b 1
)
echo [SUCCESS] 环境检查通过

:: 停止现有服务
echo [INFO] 停止现有服务...
docker-compose down -v >nul 2>&1
echo [SUCCESS] 服务已停止

:: 启动服务
echo [INFO] 启动数据库服务...
echo [INFO] 拉取Docker镜像...
docker-compose pull

echo [INFO] 启动服务容器...
docker-compose up -d

if errorlevel 1 (
    echo [ERROR] 服务启动失败
    pause
    exit /b 1
)
echo [SUCCESS] 服务启动完成

:: 等待服务就绪
echo [INFO] 等待服务启动就绪...

:: 等待PostgreSQL启动
echo [INFO] 等待 PostgreSQL 启动...
:wait_postgres
docker-compose exec -T postgres pg_isready -h localhost -p 5432 >nul 2>&1
if errorlevel 1 (
    timeout /t 2 /nobreak >nul
    echo .
    goto wait_postgres
)
echo [SUCCESS] PostgreSQL 已就绪

:: 等待Redis启动  
echo [INFO] 等待 Redis 启动...
:wait_redis
docker-compose exec -T redis redis-cli ping | findstr "PONG" >nul 2>&1
if errorlevel 1 (
    timeout /t 2 /nobreak >nul
    echo .
    goto wait_redis
)
echo [SUCCESS] Redis 已就绪

:: 等待EMQX启动
echo [INFO] 等待 EMQX 启动...
timeout /t 10 /nobreak >nul
echo [SUCCESS] EMQX 已就绪

:: 显示服务状态
echo.
echo ========================================
echo [SUCCESS] 数据库环境部署完成！
echo ========================================
echo.

echo [INFO] 服务状态:
docker-compose ps

echo.
echo [INFO] 服务访问地址:
echo   PostgreSQL: localhost:5432
echo     - 用户名: bicycle_user
echo     - 密码: bicycle123
echo     - 数据库: bicycle
echo.
echo   Redis: localhost:6379
echo.
echo   MQTT Broker: localhost:1883
echo     - WebSocket: ws://localhost:8083/mqtt
echo     - 用户名: emqx
echo     - 密码: public
echo.
echo   管理工具:
echo     - pgAdmin: http://localhost:8090
echo       (邮箱: admin@admin.com, 密码: admin)
echo     - Redis Commander: http://localhost:8081
echo     - EMQX Dashboard: http://localhost:18083
echo       (用户名: admin, 密码: 6666667mqtt)
echo.

echo [INFO] 默认用户账号:
echo   管理员: admin / admin123
echo   测试用户: testuser / admin123
echo.

echo 部署完成！按任意键退出...
pause >nul 